home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / clean / sun3.lha / Sun3 / seqdemos / reverse.icl < prev    next >
Text File  |  1992-08-07  |  816b  |  46 lines

  1. MODULE reverse;
  2.  
  3. <<
  4. Reversing a list.
  5.  
  6. A list containing n elements will be reversed n times.
  7. >>
  8.  
  9. IMPORT deltaI;
  10.  
  11. MACRO
  12.     NrOfTimes -> 1000;
  13.     
  14. RULE
  15.  
  16. ==  Miscellaneous functions.
  17.  
  18. ::  Last [INT]  -> INT;
  19.     Last [x]    -> x;
  20.     Last [x|r]  -> Last r;
  21.  
  22. ::  FromTo INT INT -> [INT];
  23.     FromTo a b  -> [a]                  , IF = a b
  24.                 -> [a | FromTo (++ a) b];
  25.  
  26.  
  27. ==  Reversing a list of n integers n times.
  28.  
  29. ::  Reverse INT -> INT;
  30.     Reverse n   -> Last (Rev_n n (FromTo 1 n));
  31.  
  32. ::  Rev_n INT   [INT]   -> [INT];
  33.     Rev_n 1     list    -> Rev list [];
  34.     Rev_n n     list    -> Rev_n (-- n) (Rev list []);
  35.  
  36. ::  Rev [INT]   [INT]   -> [INT];
  37.     Rev [x|r]   list    -> Rev r [x | list];
  38.     Rev []      list    -> list;
  39.  
  40.  
  41. ==  The Start rule.
  42.  
  43. ::  Start -> INT;
  44.     Start -> Reverse NrOfTimes;
  45.  
  46.